Apache Ant-এ <javac> টাস্কটি Java সোর্স কোড কম্পাইল করার জন্য ব্যবহৃত হয়। এটি src ডিরেক্টরি থেকে .java ফাইলগুলোকে .class ফাইলে রূপান্তরিত করে। <javac> টাস্কের মাধ্যমে আপনি বিভিন্ন অপশন এবং কনফিগারেশন ব্যবহার করে জাভা কোড কম্পাইল করতে পারবেন, যেমন ডিরেক্টরি পাথ, জেআর (JAR) ফাইল, বা ক্লাসপাথ।
Javac Task এর Syntax
<javac srcdir="source_directory" destdir="destination_directory" />
এখানে:
- srcdir: সোর্স ফাইলের ডিরেক্টরি যেখানে .java ফাইলগুলো রয়েছে।
- destdir: সেই ডিরেক্টরি যেখানে কম্পাইল করা .class ফাইলগুলো সংরক্ষণ হবে।
১. Basic Example: Java Code Compilation
এটি একটি সাধারণ উদাহরণ যেখানে src ডিরেক্টরি থেকে সমস্ত .java ফাইল কম্পাইল করা হবে এবং build/classes ডিরেক্টরিতে সংরক্ষণ করা হবে:
<project name="CompileExample" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes" />
</target>
</project>
- srcdir: সোর্স কোড যেখানে রাখা আছে (এখানে
srcডিরেক্টরি)। - destdir: যেখানে কম্পাইলড ক্লাস ফাইলগুলো রাখা হবে (এখানে
build/classesডিরেক্টরি)।
আউটপুট:
এই স্ক্রিপ্টটি চালানোর পর, src ডিরেক্টরি থেকে সব .java ফাইল কম্পাইল হয়ে build/classes ডিরেক্টরিতে .class ফাইলগুলো তৈরি হবে।
২. Including and Excluding Files
কখনও কখনও আপনি কিছু ফাইল বা ডিরেক্টরি ইনক্লুড বা এক্সক্লুড করতে চাইবেন। আপনি include এবং exclude প্যাটার্ন ব্যবহার করে নির্দিষ্ট ফাইল বা ডিরেক্টরি নির্বাচন করতে পারেন।
<project name="CompileExample" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes">
<include name="**/*.java" />
<exclude name="**/Test*.java" />
</javac>
</target>
</project>
- include: সকল .java ফাইলকে অন্তর্ভুক্ত করবে।
- exclude:
Testদিয়ে শুরু হওয়া ফাইলগুলো বাদ দেবে।
আউটপুট:
এই স্ক্রিপ্টটি সমস্ত .java ফাইল কম্পাইল করবে, তবে Test দিয়ে শুরু হওয়া .java ফাইলগুলো বাদ দেবে।
৩. Using Classpath (ক্লাসপাথ ব্যবহার)
এটি অত্যন্ত গুরুত্বপূর্ণ যখন আপনি ক্লাসপাথের মধ্যে নির্দিষ্ট লাইব্রেরি বা JAR ফাইল ব্যবহার করতে চান। আপনি classpath অ্যাট্রিবিউট ব্যবহার করে ক্লাসপাথ সেট করতে পারেন।
<project name="CompileWithClasspath" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes">
<classpath>
<pathelement path="lib/some-library.jar" />
</classpath>
</javac>
</target>
</project>
- classpath: এখানে আপনি যে লাইব্রেরি বা JAR ফাইল ব্যবহার করতে চান তার পাথ উল্লেখ করবেন।
আউটপুট:
এটি some-library.jar লাইব্রেরি সহ কোড কম্পাইল করবে।
৪. Setting Source and Target Java Versions
আপনি source এবং target অ্যাট্রিবিউট ব্যবহার করে Java এর সংস্করণ নির্ধারণ করতে পারেন, যেটি কোড কম্পাইল করার সময় Java ভার্সনকে নির্দেশ করবে। এটি খুব গুরুত্বপূর্ণ যদি আপনি একটি নির্দিষ্ট Java ভার্সনে কোড কম্পাইল করতে চান (যেমন, Java 8 বা Java 11)।
<project name="CompileWithVersion" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes" source="1.8" target="1.8"/>
</target>
</project>
- source="1.8": সোর্স কোডটি Java 8 অনুযায়ী কম্পাইল হবে।
- target="1.8": কম্পাইল করা কোডটি Java 8 তে টার্গেট হবে।
আউটপুট:
এই স্ক্রিপ্টটি Java 8 এর জন্য কোড কম্পাইল করবে এবং build/classes ডিরেক্টরিতে .class ফাইলগুলো তৈরি করবে।
৫. Debugging and Optimization
টাস্কের মাধ্যমে আপনি debugging এবং optimization সেটিংস ব্যবহার করতে পারেন। উদাহরণস্বরূপ, debug স্যুইচ ব্যবহার করে আপনি debugging information অন্তর্ভুক্ত করতে পারেন।
<project name="CompileWithDebug" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes" debug="true" />
</target>
</project>
- debug="true": কোডে debugging ইনফরমেশন অন্তর্ভুক্ত করবে, যা পরে ডিবাগ করার জন্য সহায়ক হতে পারে।
৬. Using Forking (ফর্কিং ব্যবহার করা)
কখনও কখনও আপনি fork ব্যবহার করে আলাদা প্রসেসে javac কমান্ড চালাতে চাইবেন। এটি তখন কাজে আসে যখন আপনি JVM এর কম্পাইলেশন সেটিংস পরিবর্তন করতে চান বা অ্যাপ্লিকেশন পারফরম্যান্সের জন্য এটি প্রয়োজন হতে পারে।
<project name="CompileWithFork" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes" fork="true" />
</target>
</project>
- fork="true": এটি একটি নতুন প্রসেসে javac কম্পাইলার চালাবে।
৭. Including External Libraries with JAR Files
আপনি যদি external libraries বা JAR files ব্যবহার করতে চান, তবে টাস্কের মধ্যে ক্লাসপাথ প্যারামিটার ব্যবহার করতে পারেন।
<project name="CompileWithExternalLib" default="compile" basedir=".">
<target name="compile">
<javac srcdir="src" destdir="build/classes">
<classpath>
<pathelement path="libs/some-library.jar" />
</classpath>
</javac>
</target>
</project>
- : আপনি যে লাইব্রেরি বা JAR ফাইল ব্যবহার করতে চান তার পাথ উল্লেখ করুন।
সারাংশ
<javac> টাস্কটি Apache Ant-এ Java কোড কম্পাইল করার জন্য ব্যবহৃত হয়। এটি source, target, classpath, debug, fork সহ বিভিন্ন অ্যাট্রিবিউট ব্যবহার করে Java সোর্স কোডের কম্পাইলেশন কাস্টমাইজ করতে সাহায্য করে। আপনি fileset বা include টাস্কের সাথে এটি একত্রে ব্যবহার করে নির্দিষ্ট ফাইল বা ডিরেক্টরি থেকে কোড কম্পাইল করতে পারেন। এটি Java build প্রসেসের জন্য একটি অত্যন্ত গুরুত্বপূর্ণ টাস্ক এবং এটির সাহায্যে আপনি সহজেই কোড কম্পাইলেশন এবং ডিপ্লয়মেন্ট অটোমেট করতে পারেন।
Read more